<?php

/*
Copyright 2007,2008 Benjamin V King

BH Widgets is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

BH Widgets is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with BH Widgets; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

require_once('BH_Widget_Base.php');

class BH_Include_Widget extends BH_Controllable_Widget_Base {

	function widget($args) {
		require_once(ABSPATH . WPINC . '/class-snoopy.php');
		require_once(ABSPATH . WPINC . '/cache.php');
		extract($args);
	
		$expire = (int) $this->get_attribute('expire');
		$url = $this->get_attribute('url');
		
		if (!defined('ENABLE_CACHE') || !ENABLE_CACHE)
			wp_cache_init();
			
		$key = 'bh-widget:'.get_class($this).':'. $this->get_name();
			
		$data = wp_cache_get($key);
		
		if($data == false) {
			$snoopy = new Snoopy;
			$snoopy->fetch($url);
			$data = $snoopy->results;
			wp_cache_set($key, $data,'', $expire);
		}
		
		echo "$before_widget\n";
		echo $this->get_widget_start_tag($args);
		echo "$data\n";
		echo $this->get_widget_end_tag($args, '', $expire);
		echo "$after_widget\n";
	}

	function control() {
	
		if ( $this->get_request_param_value('submit') ) {
			$this->update_attribute_from_param('url');
			$this->update_attribute_from_param('expire');
		}
		
		$url = $this->get_attribute('url');
		$expire = $this->get_attribute('expire');

		echo "<label>URL:</label><input name=\"". $this->get_request_param_name('url') ."\" type=\"text\" value=\"$url\" /><br/>\n";
		echo "<label>Expire:</label><input name=\"". $this->get_request_param_name('expire') ."\" type=\"text\" value=\"$expire\" />(sec.)<br/>\n";
		echo "<input type=\"hidden\" name=\"". $this->get_request_param_name('submit') ."\" value=\"1\" />";
	}
}

bh_widgets_register_class('BH_Include_Widget', 320, 200);
?>
